home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / editor / edt10.lha / Beispiele / Oberon / Deutsch / Compile_D.edt next >
Text File  |  1995-03-18  |  2KB  |  92 lines

  1. /* compilieren */
  2.  
  3. OPTIONS RESULTS
  4.  
  5. 'Busy' "übersetzen ..."
  6.  
  7. co=""     /* init */
  8.  
  9. processor=GetClip("Oberon2Processor")
  10. options=GetClip("Oberon2Options")
  11. switches=GetClip("Oberon2Switches")
  12. chk=GetClip("Oberon2Chk")
  13.  
  14. PARSE VAR switches newSym debug garbColl langExt smallCode smallData linkHunks compAll icons
  15. PARSE VAR chk stackChk ovflChk rangeChk caseChk returnChk nilChk oddChk typeChk clearVars
  16.  
  17. IF ~newSym THEN co=co||"y"
  18. IF debug THEN co=co||"g"
  19. IF ~garbColl THEN co=co||"a"
  20. IF ~langExt THEN co=co||"e"
  21. IF smallCode THEN co=co||"m"
  22. IF smallData THEN co=co||"d"
  23. IF icons THEN co=co||"i"
  24.  
  25. IF ~stackChk THEN co=co||"s"
  26. IF ~ovflChk THEN co=co||"v"
  27. IF ~rangeChk THEN co=co||"b"
  28. IF ~caseChk THEN co=co||"c"
  29. IF ~returnChk THEN co=co||"r"
  30. IF ~nilChk THEN co=co||"n"
  31. IF oddChk THEN co=co||"o"
  32. IF ~typeChk THEN co=co||"t"
  33. IF ~clearVars THEN co=co||"z"
  34.  
  35. IF processor=1 THEN co=co||"1"
  36. IF processor=2 THEN co=co||"2"
  37. IF processor=3 THEN co=co||"28"
  38. IF processor=4 THEN co=co||"3"
  39. IF processor=5 THEN co=co||"38"
  40. IF processor=6 THEN co=co||"4"        /* Vermutung: bisher nicht implementiert */
  41.  
  42. 'Get TEXTID'
  43. id=RESULT
  44.  
  45. 'Get NAME'
  46. baseName=RESULT
  47. IF RIGHT(baseName, 4) ~= ".mod" THEN DO
  48.   'ReqAction' '"Dieses ist kein Oberon-2|Quelltext."' "OK"
  49.   'BusyDone'
  50.   exit
  51. END
  52.  
  53. 'Get PATH'
  54. path=RESULT
  55.  
  56. IF RIGHT(path, 1)~=":" THEN
  57.   tempName=path||"/MOD"||id||".mod"
  58. ELSE
  59.   tempName=path||"MOD"||id||".mod"
  60. SaveTemp tempName  /* quick save as */
  61. done=RESULT
  62. IF ~done THEN DO
  63.   'ReqAction' '"Konnte Modul nicht|zwischenspeichern."' "OK"
  64.   BusyDone
  65.   exit
  66. END
  67.  
  68. scriptName="T:compile"||id||".s"
  69. done=Open(f, scriptName, "W")
  70. IF ~done THEN exit
  71. CALL WriteLn(f,"FailAt 100")
  72. CALL WriteLn(f,"Stack 30000")
  73. CALL WriteLn(f,"CD" '"'||path||'"')
  74. CALL WriteLn(f,'OBERON:oberon >"CON:0/20/640/200/Modul Übersetzen/CLOSE/AUTO" -'||co options tempName)
  75. CALL WriteLn(f,"IF EXISTS" tempName||"E")
  76. CALL WriteLn(f,"  Copy" tempName||"E" baseName||"E")
  77. CALL WriteLn(f,"  Delete >NIL:" tempName||"E")
  78. CALL WriteLn(f,"ELSE")
  79. CALL WriteLn(f,"  IF EXISTS" baseName||"E")
  80. CALL WriteLn(f,"    Delete >NIL:" baseName||"E")
  81. CALL WriteLn(f,"  ENDIF")
  82. CALL WriteLn(f,"ENDIF")
  83. CALL WriteLn(f,"Delete >NIL:" tempName)
  84. CALL Close(f)
  85.  
  86. ADDRESS COMMAND "Execute >NIL:" scriptName
  87. ADDRESS COMMAND "Delete >NIL:" scriptName
  88.  
  89.  
  90. 'BusyDone'
  91.  
  92. ADDRESS REXX "OBERON:rexx/Deutsch/GetFirstErr_D.edt"